package ru.ifmo.ct.network.brafs.node;

/**
 * @author Alex Vikharev vikharev@yandex-team.ru
 *         created 18.04.12
 */
public enum CommandType {
    DELETE_SEGMENT((byte) 0),
    GET_SEGMENT((byte) 1),
    CHECK_SEGMENT((byte) 2),
    ADD_SEGMENT((byte) 7),
    NO_MORE_SEGMENTS((byte) 9),

    GET_SEGMENT_FROM((byte) 3),

    ADD_FILE((byte) 4),
    GET_FILE((byte) 10),
    DELETE_FILE((byte) 5),
    LIST_FILES((byte) 8),

    HELLO((byte) 6),

    UNKNOWN((byte) 255);

    public final byte code;

    private CommandType(final byte code) {
        this.code = code;
    }

    public static CommandType byCode(final byte code) {
        for (final CommandType commandType : values()) {
            if (commandType.code == code) {
                return commandType;
            }
        }

        return UNKNOWN;
    }
}
